home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 051-060 / amok52 / abitur / txt / aktionen.mod < prev    next >
Text File  |  1993-11-04  |  4KB  |  140 lines

  1. IMPLEMENTATION MODULE Aktionen;
  2.  
  3. FROM AbiturScreen IMPORT BACKWindow;
  4. FROM Intuition IMPORT RefreshGadgets, Gadget, IntuiText,
  5.                       IntuiMessagePtr, IDCMPFlagSet, IDCMPFlags,
  6.                       GadgetFlagSet,
  7.                       ActivationFlagSet, ActivationFlags,
  8.                       boolGadget;
  9. FROM SYSTEM IMPORT BITSET, LONGSET, CAST, ADR, ADDRESS;
  10. FROM Exec IMPORT WaitPort, GetMsg, ReplyMsg;
  11. FROM Graphics IMPORT DrawModeSet, SetAPen, Move, Draw;
  12. FROM StundenPlan IMPORT Plaene;
  13. FROM Dos IMPORT Delay;
  14. FROM Arts IMPORT BreakPoint;
  15.  
  16.  
  17. VAR MyNFGText : IntuiText;
  18.     NaechsteFrageGadg: Gadget;
  19.  
  20. PROCEDURE  MNrToMIS( Number: CARDINAL; VAR Menu, Item: CARDINAL );
  21. VAR  MenuBitSet : BITSET;
  22. BEGIN
  23.    MenuBitSet := CAST(BITSET,Number);
  24.    Menu := CAST(CARDINAL,(MenuBitSet-BITSET{5,6,7,8,9,10,11,12,13,14,15}));
  25.    Item := CAST(CARDINAL,(MenuBitSet-BITSET{0,1,2,3,4,11,12,13,14,15}));
  26.    Item := Item/32
  27. END  MNrToMIS;
  28.  
  29.  
  30.  
  31. PROCEDURE GetAktion(VAR A: SpielAktion; VAR Parameter: INTEGER);
  32. VAR iAdr : ADDRESS;
  33.     ImPtr: IntuiMessagePtr;
  34.     Class: IDCMPFlagSet;
  35.     Code: CARDINAL;
  36.     MenuNr, MenuItem: CARDINAL;
  37.     i : INTEGER;
  38.  
  39. BEGIN
  40.    BACKWindow^.firstGadget := ADR(NaechsteFrageGadg);
  41.    
  42.   (*  BreakPoint(ADR("In Aktionen Anfang")); *)
  43.   (* Rahmen um NextGadget: *)
  44.    SetAPen(BACKWindow^.rPort, 7);
  45.    Move(BACKWindow^.rPort, 29     , 49);
  46.    Draw(BACKWindow^.rPort, 29 +114, 49);
  47.    Draw(BACKWindow^.rPort, 29 +114, 60);
  48.    Draw(BACKWindow^.rPort, 29     , 60);
  49.    Draw(BACKWindow^.rPort, 29     , 49);
  50.  
  51.    RefreshGadgets(ADR(NaechsteFrageGadg), BACKWindow, NIL);
  52.  
  53.    LOOP
  54.       Delay(10);
  55.       ImPtr := GetMsg(BACKWindow^.userPort);
  56.       IF ImPtr # NIL THEN
  57.          Code := ImPtr^.code;
  58.          Class:= ImPtr^.class;
  59.          iAdr := ImPtr^.iAddress;
  60.          ReplyMsg(ImPtr);
  61.          IF gadgetUp IN Class THEN
  62.             IF iAdr = ADR(NaechsteFrageGadg) THEN
  63.                A := NaechsteFrage
  64.             END
  65.          END;
  66.          IF menuPick IN Class THEN
  67.             MNrToMIS(Code, MenuNr, MenuItem);
  68.             CASE MenuNr OF
  69.              0 : CASE MenuItem OF
  70.                   0: A := Save
  71.                  |1: A := Load
  72.                  |2: A := NeuesSpiel
  73.                  |3: A := Ende
  74.                  ELSE
  75.                          A := Fehler
  76.                  END
  77.             |1 : Parameter := MenuItem + 1;
  78.                  A:= ZeigeStupl
  79.             |2 : Parameter := MenuItem ;
  80.                  A:=ZeigFach
  81.             |3 : Parameter := MenuItem + 1;
  82.                  A := ZeigZeugnis
  83.             ELSE
  84.                A := Fehler
  85.             END (* CASE *)
  86.          END (* IF *);
  87.          EXIT
  88.       END;
  89.       FOR i := 1 TO 4 DO
  90.          IF Plaene[i].W # NIL THEN
  91.             ImPtr := GetMsg(Plaene[i].W^.userPort);
  92.             IF ImPtr # NIL THEN
  93.                Class:= ImPtr^.class;
  94.                ReplyMsg(ImPtr);
  95.                IF closeWindow IN Class THEN
  96.                   Parameter := i;
  97.                   A := CloseAPlan;
  98.                   EXIT
  99.                END
  100.             END
  101.          END
  102.       END
  103.    END; (* LOOP *)
  104.    BACKWindow^.firstGadget := NIL;
  105.    RefreshGadgets(NIL, BACKWindow, NIL)
  106. END GetAktion;
  107.  
  108.  
  109.  
  110.  
  111. BEGIN
  112.    WITH MyNFGText DO
  113.       frontPen := 5;
  114.       backPen := 4;
  115.       drawMode := DrawModeSet{};ÿ      leftEdge := 1;
  116.       topEdge := 1;
  117.       iTextFont := NIL;
  118.       iText := ADR("Nächste Stunde");
  119.       nextText := NIL
  120.    END;
  121.    WITH NaechsteFrageGadg DO
  122.       nextGadget := NIL;
  123.       leftEdge := 30;
  124.       topEdge := 50;
  125.       width := 113;
  126.       height := 10;
  127.       flags := GadgetFlagSet{}; (* Complement *)
  128.       activation := ActivationFlagSet{gadgImmediate, relVerify};
  129.       gadgetType := boolGadget;
  130.       gadgetRender := NIL;
  131.       selectRender := NIL;
  132.       gadgetText := ADR(MyNFGText);
  133.       mutualExclude := LONGSET{};
  134.       specialInfo := NIL;
  135.       gadgetID := 2;
  136.       userData := NIL
  137.    END (* WITH NaechsteFrage Gadget DO *)
  138.  
  139. END Aktionen.
  140.